﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using PSE.Updater.Common.Gateway.DataContract;
using PSE.Updater.Common.Providers;

namespace PSE.Updater.Common.Gateway.ServiceContract
{
    /// <summary>
    /// Contrato para descobrir as Atualizações disponíveis 
    /// </summary>
    [ServiceContract]
    public interface IUpdatesDiscoveryService
    {
        /// <summary>
        /// Recuperar a lista de atualizacoes disponiveis para uma lista de modulos informada
        /// </summary>
        /// <param name="moduleVersions">Módulos e suas versões</param>
        /// <returns>Lista de atualizações disponíveis</returns>
        [OperationContract]
        List<ModuleUpdatePackage> GetAvailableUpdates(ProviderType type, List<ModuleVersion> moduleVersions);

    }
}
